using System;
using System.Collections.Generic;
using System.Text;
using SharpMud.MudLib.Common.Entities;
using SharpMud.MudLib.Common.Resourcing;

namespace SharpMud.MudLib.Common.Environment
{
    /// <summary>
    /// Outlines the basic requirements that any room class must meet.
    /// </summary>
    public interface IRoom : IHasInstanceGuid
    {
        IArea               ParentArea          { get;}
        ICharacter[]        GetCharacters();
        IDescribable[]      GetDescribables();
    }

    /// <summary>
    /// Indicates that the room is virtually generated when used and destroyed when
    /// it no longer is [in use]. The room must be identifiable by a Uri.
    /// </summary>
    public interface IVirtualRoom : IRoom, IHasInstanceUri
    {

    }

    /// <summary>
    /// Indicates that the area contains virtual rooms that must be identifiable by URIs
    /// </summary>
    public interface IVirtualRoomHost : IArea, IUriIdentifiedResourceHost<IVirtualRoom>
    {
    }
}
